home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 19
/
Aminet 19 (1997)(GTI - Schatztruhe)[!][Jun 1997].iso
/
Aminet
/
gfx
/
3d
/
MyMPEG_gui.lha
/
MyMPEG_gui
/
MyMPEG.gui-3.5
< prev
next >
Wrap
Text File
|
1997-04-23
|
24KB
|
694 lines
(
( MyMPEG - create MPEG-animations with a GUI
( © Marc Bartels 12.02.97 first invention
( $VER: MyMPEG 1.0 (16 Mar 1997)
?& MyMPEG_GUI NOT ?IF
( define MyMPEG_GUI to make sure that these will not be defined again later.
1 CONSTANT MyMPEG_GUI
( this file contains necessary RPL definitions for GUI words.
"r3d3:rpl/sys/ui.rpl" LOAD
"r3d3:rpl/sys/io.rpl" LOAD
"r3d3:rpl/sys/view.rpl" LOAD
"r3d3:rpl/sys/windows.rpl" LOAD
"r3d3:rpl/sys/render.rpl" LOAD
"r3d3:rpl/sys/animation.rpl" LOAD
( Variables, make sure these are unique. Conflicts with other RPL gui
( programs can crash the system.
256 STRING sDefPic
256 STRING sDefMPEG
256 STRING sDefMPEG2
256 STRING sDefPlayer
256 STRING sBuff
30 STRING sBuff1
30 STRING sBuff2
VARIABLE mympegaWindow
VARIABLE mympegaCheck1
VARIABLE mympegaCheck2
VARIABLE iCheck
VARIABLE mympegaMx1
VARIABLE mympegaStrX
VARIABLE mympegaStrY
VARIABLE mympegiStrX
VARIABLE mympegiStrY
VARIABLE mympegaMx2
30 STRING mympegsStrI
30 STRING mympegsStrP
30 STRING mympegsStrB
30 STRING mympegsStrV
VARIABLE mympegaPat
30 STRING mympegsPat
VARIABLE mympegaStrV
VARIABLE mympegaView
VARIABLE mympegaMx3
256 STRING mympegsPPath
256 STRING mympegsPName
256 STRING mympegsPFull
VARIABLE iCount
VARIABLE mympegaPic
VARIABLE mympegaPB
VARIABLE mympegiX
VARIABLE mympegaFile
256 STRING mympegsMFull
VARIABLE mympegaMPG
VARIABLE mympegaMB
VARIABLE mympegaSB
VARIABLE mympegaCB
VARIABLE iStartFrm
VARIABLE iGOP
VARIABLE iOutput
30 STRING sFrmCmd
( ############################################################ )
( ########## Change the following to your needs: ############ )
15 CONSTANT FONTSIZE
"RAM:t/preview." sDefPic CPY
"ram:" sDefMPEG CPY
"rEaL:anim/" sDefMPEG2 CPY
"dh0:viewer/mpeg_play dither cybergfx loop quiet" sDefPlayer CPY
( ############################################################ )
( Callbacks for buttons. When the user clicks buttons, these words are called.
( and other Word definitions.
: mympegcbCheck1 ( simulates a radiobutton, first knop
IF
UI_Done 0 UICB_Checked mympegaCheck2 FETCH UI_SETATTRS
ELSE
UI_Done 1 UICB_Checked mympegaCheck1 FETCH UI_SETATTRS
ENDIF
;
: mympegcbCheck2 ( simulates a radiobutton, second knop
IF
UI_Done 0 UICB_Checked mympegaCheck1 FETCH UI_SETATTRS
ELSE
UI_Done 1 UICB_Checked mympegaCheck2 FETCH UI_SETATTRS
ENDIF
;
: SetPicSize ( writes the framesize into the Rendersettings of the relevant View window
( because the RPL-includes for Amiga v3.5 does not yet exist numeral values are used
mympegiStrY FETCH
mympegsStrV WND_ADDR W.aData + FETCH
1106 ( VR.bHeight at first h then w ) + STORE
mympegiStrX FETCH
mympegsStrV WND_ADDR W.aData + FETCH
1104 ( VR.bWidth ) + STORE
;
: mympegcbMx1 ( Cyclegadget to choose framesize, here without polling from array, old version
DUP 0 = IF
128 mympegiStrX STORE
96 mympegiStrY STORE
UI_Done 1 UI_Disabled mympegaStrX FETCH UI_SETATTRS
UI_Done 1 UI_Disabled mympegaStrY FETCH UI_SETATTRS
ENDIF
DUP 1 = IF
160 mympegiStrX STORE
112 mympegiStrY STORE
UI_Done 1 UI_Disabled mympegaStrX FETCH UI_SETATTRS
UI_Done 1 UI_Disabled mympegaStrY FETCH UI_SETATTRS
ENDIF
DUP 2 = IF
160 mympegiStrX STORE
128 mympegiStrY STORE
UI_Done 1 UI_Disabled mympegaStrX FETCH UI_SETATTRS
UI_Done 1 UI_Disabled mympegaStrY FETCH UI_SETATTRS
ENDIF
DUP 3 = IF
352 mympegiStrX STORE
240 mympegiStrY STORE
UI_Done 1 UI_Disabled mympegaStrX FETCH UI_SETATTRS
UI_Done 1 UI_Disabled mympegaStrY FETCH UI_SETATTRS
ENDIF
DUP 4 = IF
320 mympegiStrX STORE
256 mympegiStrY STORE
UI_Done 1 UI_Disabled mympegaStrX FETCH UI_SETATTRS
UI_Done 1 UI_Disabled mympegaStrY FETCH UI_SETATTRS
ENDIF
5 = IF
UI_Done 0 UI_Disabled mympegaStrX FETCH UI_SETATTRS
UI_Done 0 UI_Disabled mympegaStrY FETCH UI_SETATTRS
UI_Done sBuff UIST_String mympegaStrX FETCH UI_GETATTRS
sBuff ATOF mympegiStrX STORE
UI_Done sBuff UIST_String mympegaStrY FETCH UI_GETATTRS
sBuff ATOF mympegiStrY STORE
ELSE
UI_Done 1 UI_Disabled mympegaStrX FETCH UI_SETATTRS
UI_Done 1 UI_Disabled mympegaStrY FETCH UI_SETATTRS
ENDIF
SetPicSize
;
: mympegcbStrX ( X value for framesize is truncated to a multiple of 16
ATOF 16 / 16 * mympegiStrX STORE
UI_Done mympegiStrX FETCH "%d" sBuff SPRINTF sBuff UIST_String mympegaStrX FETCH UI_SETATTRS
SetPicSize
;
: mympegcbStrY ( see at X value
ATOF 16 / 16 * mympegiStrY STORE
UI_Done mympegiStrY FETCH "%d" sBuff SPRINTF sBuff UIST_String mympegaStrY FETCH UI_SETATTRS
SetPicSize
;
: CheckPat ( the given pattern is validated at begining and end
( letters in the middle are not checked
"|n" sBuff SPRINTF
sBuff mympegsPat 1 NCPY
sBuff "I" COMPARE IF
"Has to begin with I " ERROR
EXIT
ENDIF
mympegsPat DUP LEN 1 - + sBuff SWAP 1 NCPY sBuff "B" COMPARE NOT IF
"Must not end with B " ERROR
EXIT
ENDIF
;
: mympegcbMx2 ( get values for pattern from array
( only possible by using an external rpl file
DUP 4 = IF
DROP
UI_Done 0 UI_Disabled mympegaPat FETCH UI_SETATTRS
UI_Done mympegsPat UIST_String mympegaPat FETCH UI_GETATTRS
ELSE
UI_Done 1 UI_Disabled mympegaPat FETCH UI_SETATTRS
( mympegLab2 SWAP PFETCH mympegsPat CPY
"r3d3:rpl/MyMPEG-array-Pat.rpl" LOAD
ENDIF
;
: mympegcbPat
mympegsPat SPRINTF
CheckPat
;
: mympegcbStrI
DUP ATOF DUP 1 < SWAP 31 > OR IF
"The value must be between 1 and 31 !" ERROR
DROP
ELSE
mympegsStrI SPRINTF
ENDIF
;
: mympegcbStrB
DUP ATOF DUP 1 < SWAP 31 > OR IF
"The value must be between 1 and 31 !" ERROR
DROP
ELSE
mympegsStrB SPRINTF
ENDIF
;
: mympegcbStrP
DUP ATOF DUP 1 < SWAP 31 > OR IF
"The value must be between 1 and 31 !" ERROR
DROP
ELSE
mympegsStrP SPRINTF
ENDIF
;
: SetPicName ( writes the picturename into the Rendersettings of the relevant View window
( because the RPL-includes for Amiga v3.5 does NOT yet exist numeral values are used
mympegsStrV WND_ADDR W.aData + FETCH
1176 ( VR.sFilename ) + mympegsPFull SWAP CPY
;
: PathParts ( devide the full name into file and path name
( has to be executed after StripPath, due to the right iCount value
"" mympegsPPath SPRINTF
mympegsPPath mympegsPFull DUP LEN iCount FETCH - NCAT
iCount FETCH 1 - iCount STORE
mympegsPFull DUP LEN iCount FETCH - +
mympegsPName CPY
;
: StripPath ( validate picturename and determine iCount for later separation
mympegsPFull DUP LEN 1 - + "/" COMPARE NOT IF ( check if it ends with /
"Name ends with / !" ERROR
EXIT
ENDIF
1 iCount STORE
"|n" sBuff SPRINTF
BEGIN ( LOOP UNTIL first / is reached reverse
mympegsPFull DUP LEN iCount FETCH - + sBuff SWAP 1 NCPY sBuff "/" COMPARE NOT IF
EXIT
ENDIF
mympegsPFull LEN iCount FETCH < IF ( end the LOOP IF ...
"Use at least one subdirectory !" ERROR
EXIT
ENDIF
iCount FETCH 1 + iCount STORE
AGAIN
;
: COUNTWND
0 ( INITILIATE COUNTER
"editor" DATABASE ( GET POINTER TO STRUCTURE
BEGIN ( START LOOP
FETCH ( GET ENTRY
DUP FETCH ( GET NEXT ENTRY
WHILE ( IF STRUCTURE VALID
SWAP 1 + SWAP ( INCREASE COUNTER
REPEAT ( RETURN LOOP
DROP ( DROP ADDRESS OF STRUCTURE
;
: CountView ( determine the number of View windows
( SuperBitMap, Borderless OR DoubleBuffered are not counted
( output integer
0
"editor" DATABASE
COUNTWND 0 DO
FETCH DUP W.iType + FETCH 3 = IF
SWAP 1 + SWAP
ENDIF
LOOP
DROP
;
: CycleView ( puts the names of available View windows out
1 iCount STORE
"editor" DATABASE
BEGIN
FETCH DUP
W.iType + FETCH 3 = IF
DUP
W.aName + FETCH SWAP ( PUTS
ENDIF
iCount FETCH COUNTWND > IF DROP EXIT ENDIF
iCount FETCH 1 + iCount STORE
AGAIN
;
: mympegcbMx3 ( Cyclegadget for View window selection
( here an external rpl file is used also to read from the array
DUP 0 = IF
DROP
UI_Done 1 UI_Disabled mympegaPic FETCH UI_SETATTRS
UI_Done 1 UI_Disabled mympegaPB FETCH UI_SETATTRS
UI_Done 1 UI_Disabled mympegaMPG FETCH UI_SETATTRS
UI_Done 1 UI_Disabled mympegaMB FETCH UI_SETATTRS
UI_Done 1 UI_Disabled mympegaSB FETCH UI_SETATTRS
ELSE
"r3d3:rpl/MyMPEG-array-View.rpl" LOAD
UI_Done 0 UI_Disabled mympegaPic FETCH UI_SETATTRS
UI_Done 0 UI_Disabled mympegaPB FETCH UI_SETATTRS
UI_Done 0 UI_Disabled mympegaMPG FETCH UI_SETATTRS
UI_Done 0 UI_Disabled mympegaMB FETCH UI_SETATTRS
UI_Done 0 UI_Disabled mympegaSB FETCH UI_SETATTRS
mympegsStrV "attr(W:%s->output)" sBuff SPRINTF sBuff EVAL iOutput STORE ( save original outputmode
mympegsStrV "attr(W:%s->output)=6" sBuff SPRINTF sBuff EVAL DROP ( set output to PPM
mympegsStrV "attr(W:%s->filename)" sBuff SPRINTF sBuff EVAL DUP "" COMPARE 0 = IF
DROP sDefPic
ENDIF
DUP mympegsPFull CPY
UI_Done SWAP UIST_String mympegaPic FETCH UI_SETATTRS
SetPicSize
SetPicName
StripPath
PathParts
sDefMPEG mympegsPName "%s%smpg" mympegsMFull SPRINTF
UI_Done mympegsMFull UIST_String mympegaMPG FETCH UI_SETATTRS
ENDIF
;
: mympegcbPic ( after typing the picturename the MPEG name is changed automatically
DROP
UI_Done mympegsPFull UIST_String mympegaPic FETCH UI_GETATTRS
SetPicName
StripPath
PathParts
sDefMPEG mympegsPName "%s%smpg" mympegsMFull SPRINTF
UI_Done mympegsMFull UIST_String mympegaMPG FETCH UI_SETATTRS
;
: mympegcbGetP ( filerequester for picturenames
UI_Done mympegsPFull UIST_String mympegaPic FETCH UI_GETATTRS
iIO_SAVE mympegsPFull mympegsPPath "Base picturename" GET_FIL
IF
UI_Done mympegsPFull UIST_String mympegaPic FETCH UI_SETATTRS
ELSE
UI_Done mympegsPFull UIST_String mympegaPic FETCH UI_GETATTRS
ENDIF
SetPicName
StripPath
PathParts
sDefMPEG mympegsPName "%s%smpg" mympegsMFull SPRINTF
UI_Done mympegsMFull UIST_String mympegaMPG FETCH UI_SETATTRS
;
: Frames ( outputs framename without path but with framenumbers - from to - in the right way
"|n" sBuff SPRINTF
mympegsPName
"" "attr(A:->currentfrm)" EVAL "attr(A:->format)" EVAL sBuff1 SPRINTF sBuff1
"" "attr(A:->frames)" EVAL 1 - "attr(A:->format)" EVAL sBuff2 SPRINTF sBuff2
"%s* [%s-%s]" sBuff SPRINTF
;
: mympegcbMPG ( reads the MPEG name
DROP
UI_Done mympegsMFull UIST_String mympegaMPG FETCH UI_GETATTRS
;
: mympegcbGetM ( filerequester for MPEG name
"|n" mympegsMFull SPRINTF
iIO_SAVE mympegsMFull sDefMPEG2 "Name of MPEG" GET_FIL
IF
UI_Done mympegsMFull UIST_String mympegaMPG FETCH UI_SETATTRS
( ELSE
( UI_Done mympegsMFull UIST_String mympegaMPG FETCH UI_GETATTRS
ENDIF
;
: FCGOPs ( FrameCommand when GOPs are used
DUP "attr(A:->currentfrm)" EVAL SWAP - 1 + mympegsPat LEN MOD NOT IF
iGOP FETCH
mympegsPFull "r3d3:Accessories/mpeg_encodes -gop %d %sparam" sBuff SPRINTF sBuff SYSTEM
mympegsMFull iGOP FETCH "c:protect %s.gop.%d d sub >nil:" sBuff SPRINTF sBuff SYSTEM
mympegsPFull "c:delete %s#? >nil:" sBuff SPRINTF sBuff SYSTEM
iGOP FETCH 1 + iGOP STORE
ELSE
"attr(A:->currentfrm)" EVAL 1 + "attr(A:->frames)" EVAL = IF
iGOP FETCH mympegsPFull "r3d3:Accessories/mpeg_encodes -gop %d %sparam" sBuff SPRINTF sBuff SYSTEM
mympegsMFull iGOP FETCH "c:protect %s.gop.%d d sub >nil:" sBuff SPRINTF sBuff SYSTEM
mympegsPFull "c:delete %s#? >nil:" sBuff SPRINTF sBuff SYSTEM
ENDIF
ENDIF
"attr(A:->currentfrm)" EVAL 1 + "attr(A:->frames)" EVAL = IF
DROP ( the offset for GOPs is droped
mympegsPFull "r3d3:Accessories/mpeg_encodes -combine_gops %sparam" sBuff SPRINTF sBuff SYSTEM
mympegsMFull "c:delete %s.gop.#? force >nil:" sBuff SPRINTF sBuff SYSTEM
mympegsPFull "c:delete %sparam force >nil:" sBuff SPRINTF sBuff SYSTEM
UI_Done 0 UI_Disabled mympegaSB FETCH UI_SETATTRS
UI_Done 1 UI_Disabled mympegaCB FETCH UI_SETATTRS
sDefPlayer mympegsMFull "%s %s" sBuff SPRINTF sBuff SYSTEM
ENDIF
;
: FCnoGOPs ( FrameCommand when GOPs are not used
"attr(A:->currentfrm)" EVAL 1 + "attr(A:->frames)" EVAL = IF
mympegsPFull "r3d3:Accessories/mpeg_encodes %sparam" sBuff SPRINTF sBuff SYSTEM
mympegsPFull "c:delete %sparam force >nil:" sBuff SPRINTF sBuff SYSTEM
UI_Done 0 UI_Disabled mympegaSB FETCH UI_SETATTRS
UI_Done 1 UI_Disabled mympegaCB FETCH UI_SETATTRS
sDefPlayer mympegsMFull "%s %s" sBuff SPRINTF sBuff SYSTEM
"OK|No" "Delete the picture files?" GET_KEY
IF
mympegsPFull "c:delete %s#? >nil:" sBuff SPRINTF sBuff SYSTEM
ENDIF
QUIT
ENDIF
;
: DumpStrNL ( Input: sString
( saves row with CR and LF to file
mympegaFile FETCH FPUTS 0 < IF
"Cannot write to a file" ERROR
ENDIF
"|n" sBuff SPRINTF
sBuff mympegaFile FETCH FPUTS 0 < IF
"Cannot write to a file" ERROR
ENDIF
;
: mympegcbStart ( start button hit
UI_Done mympegsMFull UIST_String mympegaMPG FETCH UI_SETATTRS
DEPTH IF ( if Pause was hit
( do nothing
ELSE
"|n" sFrmCmd SPRINTF
"anim" DATABASE A.sFRAMECMD + sFrmCmd CPY ( save originale framecommand
mympegsStrV "attr(W:%s->output)=6" sBuff SPRINTF sBuff EVAL DROP ( set outputmode to PPM
SetPicSize
mympegsPFull "%sparam" sBuff SPRINTF sBuff "w" FOPEN DUP mympegaFile STORE ( open PARAM file
NOT IF
sBuff "Cannot open file %s - START AGAIN" PUTS
mympegsPFull "protect %sparam d add" sBuff SPRINTF sBuff SYSTEM
EXIT
ENDIF
"# This parameter file was created by MyMPEG. " DumpStrNL
"# A RPL program to create MPEGs from within Real3D v3.5 " DumpStrNL
"# Written by Marc Bartels " DumpStrNL
"" DumpStrNL
"" DumpStrNL
mympegsPat
"PATTERN %s" sBuff SPRINTF sBuff DumpStrNL
mympegsMFull
"OUTPUT %s" sBuff SPRINTF sBuff DumpStrNL
"" DumpStrNL
"BASE_FILE_FORMAT PNM" DumpStrNL
mympegsPat LEN
"GOP_SIZE %d" sBuff SPRINTF sBuff DumpStrNL
mympegiStrY FETCH 16 /
"SLICES_PER_FRAME %d" sBuff SPRINTF sBuff DumpStrNL
"" DumpStrNL
"PIXEL HALF" DumpStrNL
"RANGE 10" DumpStrNL
"PSEARCH_ALG LOGARITHMIC" DumpStrNL
"BSEARCH_ALG CROSS2" DumpStrNL
mympegsStrI
"IQSCALE %s" sBuff SPRINTF sBuff DumpStrNL
mympegsStrB
"BQSCALE %s" sBuff SPRINTF sBuff DumpStrNL
mympegsStrP
"PQSCALE %s" sBuff SPRINTF sBuff DumpStrNL
"" DumpStrNL
"REFERENCE_FRAME ORIGINAL" DumpStrNL
"FORCE_ENCODE_LAST_FRAME" DumpStrNL ( undocumented feature
mympegiStrX FETCH mympegiStrY FETCH
"YUV_SIZE %dx%d" sBuff SPRINTF sBuff DumpStrNL
mympegsPPath
"INPUT_DIR %s" sBuff SPRINTF sBuff DumpStrNL
"INPUT" DumpStrNL
Frames sBuff DumpStrNL
"END_INPUT" DumpStrNL
"INPUT_CONVERT *" DumpStrNL
mympegaFile FETCH FCLOSE ( close file
IF "Error closing file " ERROR EXIT ENDIF
mympegsPFull "protect %sparam d sub" sBuff SPRINTF sBuff SYSTEM
0 3 6 0 MENUNUM iWC_MENU mympegsStrV iWM_ACTION WND_SENDMSG DROP ( open Drawing Settings of View window
0 iGOP STORE
"attr(A:->currentfrm)" EVAL mympegsPat LEN MOD ( offset for GOPs put on stack
"attr(A:->currentfrm)" EVAL iStartFrm STORE
UI_Done iCheck UICB_Checked mympegaCheck1 FETCH UI_GETATTRS
iCheck FETCH IF
"FCGOPs" "anim" DATABASE A.sFRAMECMD + CPY ( set framecommand )
ELSE
"FCnoGOPs" "anim" DATABASE A.sFRAMECMD + CPY ( set framecommand )
ENDIF
ENDIF
UI_Done 0 UI_Disabled mympegaCB FETCH UI_SETATTRS
UI_Done 1 UI_Disabled mympegaSB FETCH UI_SETATTRS
4 3 0 MENU ( used PLAY this way to be able to undo it
;
: mympegcbCancel
UI_Done 1 UI_Disabled mympegaCB FETCH UI_SETATTRS
5 4 0 MENU ( Cancel all
UI_Done 0 UI_Disabled mympegaSB FETCH UI_SETATTRS
"MPEG|Pause|Delete" "Create MPEG, pause or delete everything?" GET_KEY
DUP 1 = IF ( MPEG
iCheck FETCH IF
DROP ( the 1 is droped
mympegsPFull "c:delete %s#? >nil:" sBuff SPRINTF sBuff SYSTEM ( delete pictures only
mympegsPFull "r3d3:Accessories/mpeg_encodes -combine_gops %sparam" sBuff SPRINTF sBuff SYSTEM
mympegsMFull "c:delete %s.gop.#? force >nil:" sBuff SPRINTF sBuff SYSTEM
mympegsPFull "c:delete %sparam force >nil:" sBuff SPRINTF sBuff SYSTEM
sDefPlayer mympegsMFull "%s %s" sBuff SPRINTF sBuff SYSTEM
DROP ( offset for GOPs is droped
QUIT
ELSE
"attr(A:->currentfrm)" EVAL iStartFrm FETCH -
mympegsPFull "r3d3:Accessories/mpeg_encodes -frames 0 %d %sparam" sBuff SPRINTF sBuff SYSTEM
mympegsPFull "r3d3:Accessories/mpeg_encodes -combine_frames %sparam" sBuff SPRINTF sBuff SYSTEM
mympegsPFull "c:delete %sparam force >nil:" sBuff SPRINTF sBuff SYSTEM
mympegsMFull "c:delete %s.frame.#? >nil:" sBuff SPRINTF sBuff SYSTEM
sDefPlayer mympegsMFull "%s %s" sBuff SPRINTF sBuff SYSTEM
"OK|No" "Delete the picture files?" GET_KEY
IF
mympegsPFull "c:delete %s#? >nil:" sBuff SPRINTF sBuff SYSTEM
ENDIF
QUIT
ENDIF
ENDIF
DUP 2 = IF ( Pause
"You selected Pause, so you may start again later." PUTS
DROP ( the 2 is droped, offset for GOPs is left on the stack
EXIT
ENDIF
0 = IF ( Delete
mympegsPFull "c:delete %s#? >nil:" sBuff SPRINTF sBuff SYSTEM ( delete pictures only
mympegsMFull "c:delete %s.gop.#? force >nil:" sBuff SPRINTF sBuff SYSTEM
mympegsPFull "c:delete %sparam force >nil:" sBuff SPRINTF sBuff SYSTEM
QUIT ( also empty stack
ENDIF
;
: mympegcbHelp
"r3d3:help/mympeg_gui.guide" "Introduction" 0 AGUIDE
;
: mympegcbClose
mympegsStrV LEN IF
mympegsStrV iOutput FETCH "attr(W:%s->output)=%d" sBuff SPRINTF sBuff EVAL DROP ( restore original outputmodes
sFrmCmd "anim" DATABASE A.sFRAMECMD + CPY ( restore original framecommand
ENDIF
mympegaWindow FETCH UI_DELETE ( delete the window
NULL mympegaWindow STORE ( Set mympegaWindow to NULL
( REFRESH
( FORGET MyMPEG_GUI
;
( Callback for Window. Mouse movements, mouse clicks and close window
( events are reported.
: mympegcbWindow
PARAM
VARIABLE iMouseY
VARIABLE iMouseX
VARIABLE iEvent
ENDPARAM
( Check if iEvent is equal to UIWM_Close
iEvent FETCH UIWM_Close =
IF
( & ) mympegcbClose ( EXECUTE )
ENDIF
;
?ENDIF
( Now that we have defined all the required variables and words it is time
( to create windows and other display elements.
( if window is already open, prompt proper error message and do nothing.
mympegaWindow FETCH
?IF
"Understood" "Window already opened" GET_KEY DROP
?ELSE
( otherwise, open all display elements
( Open a window
UI_Done & mympegcbWindow 0 0 326 FONTSIZE 107 + "MyMPEG ©1997 Marc Bartels" UI_WINDOW mympegaWindow STORE
( create button gadgets, no need to save handles ?
UI_Done mympegaWindow FETCH 0 86 FONTSIZE 5 + 0 12 "Memory :" UI_TEXT DROP
UI_Done
1 UICB_Checked
mympegaWindow FETCH & mympegcbCheck1 86 FONTSIZE 5 + 50 12 "use GOPs" UI_CHECKBOX mympegaCheck1 STORE
UI_Done
0 UICB_Checked
mympegaWindow FETCH & mympegcbCheck2 86 FONTSIZE 17 + 50 12 "do not use GOPs" UI_CHECKBOX mympegaCheck2 STORE
7 PARRAY mympegLab1
0 "custom" "320 × 256" "352 × 240" "160 × 128" "160 × 112" "128 × 96" mympegLab1 PINIT
UI_Done
1 UIMX_Active
160 mympegiStrX STORE 112 mympegiStrY STORE
mympegLab1 UIMX_Labels
mympegaWindow FETCH & mympegcbMx1 86 FONTSIZE 29 + 108 12 "Size :" UI_MX mympegaMx1 STORE
UI_Done
mympegaWindow FETCH & mympegcbStrX 232 FONTSIZE 29 + 44 12 "X Y" UI_STRING mympegaStrX STORE
UI_Done
mympegaWindow FETCH & mympegcbStrY 276 FONTSIZE 29 + 44 12 "" UI_STRING mympegaStrY STORE
6 PARRAY mympegLab2
0 "custom" "IBBPBBI" "IBP" "IPBP" "IIII" mympegLab2 PINIT
"IIII" mympegsPat SPRINTF
UI_Done
0 UIMX_Active
mympegLab2 UIMX_Labels
mympegaWindow FETCH & mympegcbMx2 86 FONTSIZE 41 + 100 12 "Quality :" UI_MX mympegaMx2 STORE
UI_Done
mympegaWindow FETCH & mympegcbPat 232 FONTSIZE 41 + 88 12 "Pat." UI_STRING mympegaPat STORE
UI_Done "2" DUP mympegsStrI CPY UIST_String
mympegaWindow FETCH & mympegcbStrI 232 FONTSIZE 53 + 28 12 "IBP" UI_STRING DROP
UI_Done "4" DUP mympegsStrB CPY UIST_String
mympegaWindow FETCH & mympegcbStrB 262 FONTSIZE 53 + 28 12 "" UI_STRING DROP
UI_Done "6" DUP mympegsStrP CPY UIST_String
mympegaWindow FETCH & mympegcbStrP 292 FONTSIZE 53 + 28 12 "" UI_STRING DROP
CountView 2 + PARRAY mympegLab3
0 CycleView "(None)" mympegLab3 PINIT
UI_Done
0 UIMX_Active
mympegLab3 UIMX_Labels
mympegaWindow FETCH & mympegcbMx3 86 FONTSIZE 53 + 100 12 "Window :" UI_MX mympegaMx3 STORE
UI_Done
mympegaWindow FETCH & mympegcbPic 86 FONTSIZE 65 + 206 12 "Pictures:" UI_STRING mympegaPic STORE
UI_Done
mympegaWindow FETCH & mympegcbGetP 292 FONTSIZE 65 + 28 12 "/\\" UI_BUTTON mympegaPB STORE
UI_Done
mympegaWindow FETCH & mympegcbMPG 86 FONTSIZE 77 + 206 12 "MPEGfile:" UI_STRING mympegaMPG STORE
UI_Done
mympegaWindow FETCH & mympegcbGetM 292 FONTSIZE 77 + 28 12 "/\\" UI_BUTTON mympegaMB STORE
UI_Done mympegaWindow FETCH & mympegcbStart 6 FONTSIZE 91 + 75 12 "Start" UI_BUTTON mympegaSB STORE
UI_Done mympegaWindow FETCH & mympegcbCancel 85 FONTSIZE 91 + 75 12 "Cancel" UI_BUTTON mympegaCB STORE
UI_Done mympegaWindow FETCH & mympegcbHelp 166 FONTSIZE 91 + 75 12 "Help" UI_BUTTON DROP
UI_Done mympegaWindow FETCH & mympegcbClose 245 FONTSIZE 91 + 75 12 "Close" UI_BUTTON DROP
mympegaWindow FETCH UI_REALIZE ( realize display elements
?ENDIF
UI_Done 1 UI_Disabled mympegaStrX FETCH UI_SETATTRS
UI_Done 1 UI_Disabled mympegaStrY FETCH UI_SETATTRS
UI_Done 1 UI_Disabled mympegaPat FETCH UI_SETATTRS
UI_Done 1 UI_Disabled mympegaPic FETCH UI_SETATTRS
UI_Done 1 UI_Disabled mympegaPB FETCH UI_SETATTRS
UI_Done 1 UI_Disabled mympegaMPG FETCH UI_SETATTRS
UI_Done 1 UI_Disabled mympegaMB FETCH UI_SETATTRS
UI_Done 1 UI_Disabled mympegaSB FETCH UI_SETATTRS
UI_Done 1 UI_Disabled mympegaCB FETCH UI_SETATTRS
( FORGET MyMPEG_GUI